<?php
    set_time_limit(0);
    
    $cache = new Memcache;
    $cache->connect('localhost', 11211);
    
    $code = $_GET['code'];
    $info = $cache->get('code_' . $code);
    if (is_array($info)) {
        $progress = '';
        $tmpFile = $info['tempPath'] . '/' . $code;
        /**
         * функція для логування виводу у кеш
         * 
         * @global код $code
         * @global Memcache $cache
         * @global string $progress
         * @param string $toLog
         * @return string порожній рядок 
         */
        function _log($toLog) {
            global $code, $progress, $tmpFile;
            $progress .= $toLog;
            file_put_contents($tmpFile, $progress);
            return "";
        }

        switch ($info['framework']) {
            case 'phpunit':
            default:
                require 'PHPUnit/TextUI/Command.php';
                try {
                    $command = new PHPUnit_TextUI_Command;
                    $dirname = dirname($info['tests']['path']);
                    $fileName = substr($info['tests']['path'], strlen($dirname)+1);

                    chdir($dirname);
                    ob_implicit_flush(true);
                    ob_start('_log', 2);
                    $command->run(array('/usr/bin/phpunit', $fileName), true);
                    ob_end_flush();
                    
                    echo $code;
                }
                catch(Exception $ex) {
                    echo $ex->getMessage();
                }
                break;
        }
    }
    echo 'hello';
    $info = $cache->set('code_' . $code, 'complete');